#ifndef CPostesH
#define CPostesH

#include <EIC.h>
#include "btrieve.h"

#define LEN_LIBELLE_POSTE 61

enum ErreurInstallationPoste
  {
    AucuneErreur = 0,
    Erreur_Inconnue,
    Ouverture_Commun_P,
    Ouverture_Commun_0,
    Ouverture_Commun_1,
    Ouverture_Commun_2,
    Creation_Poste_Commun_P,
    Creation_Poste_Commun_0,
    Creation_Poste_Commun_1,
    Creation_Poste_Commun_2,
    Suppression_Poste_Commun_P,
    Suppression_Poste_Commun_0,
    Suppression_Poste_Commun_1,
    Suppression_Poste_Commun_2,
    Creation_Groupe_Commun,
    Suppression_Groupe_Commun,
    Modification_Libelle_Poste,
    GetValeursCommun,
    SetValeursCommun,
  };




#pragma pack(2)
typedef struct
  {
    unsigned short eIDPoste;         /* Valeur POSTE_* qui identifie le poste */
    unsigned short eIDGroupe;        /* Valeur POSTES_* qui identifie le groupe du poste */
    char           cMS;              /* 'M'     pour Montant, 'S' pour solde  */
    char           cDebit;           /* '+'/'-' pour Débit  positif/négatif   */
    char           cCredit;          /* '+'/'-'  "   Crédit        "          */
    unsigned short bSupprimable;     /* != 0 si ce poste peut être supprimé (il a été créé par l'utilisateur) */
    char           szDesignation[LEN_LIBELLE_POSTE + 1];
  }
PosteCriteres;
#pragma pack()




#pragma pack(1)
typedef struct
  {
    unsigned short eIDPoste;                     /* Une valeur POSTE_* */
    char szRacine[ 13 + 1];                      /* Racine à prendre ou a exclure dans un poste */
  }
PosteRacine;
#pragma pack()




#pragma pack(2)
typedef struct
  {
    unsigned short eIDPoste;                     /* Valeur POSTE_* qui identifie le poste */
    short int bANouveaux;                        /* Booleen qui indique si l'on utilise les a nouveaux ou pas */
  }
PosteCriteresANouveaux;
#pragma pack()




class PACKAGE_EICBTRV CPostes
{
private:
  bool FichierPExistant,Fichier0Existant,Fichier1Existant,Fichier2Existant;
	CBtrvFile Commun_P,Commun_0,Commun_1,Commun_2;
  PosteCriteres Poste;
  PosteRacine Compte;
  PosteCriteresANouveaux ANouveau;
  AnsiString TblP_Commun,Tbl0_Commun,Tbl1_Commun,Tbl2_Commun;
public:
  __fastcall CPostes(const AnsiString &CheminDesPostesAModifier,bool AModifierAvecRevAO);
  virtual __fastcall ~CPostes();
  bool __fastcall Open();
  void __fastcall Close();
  bool __fastcall SupprimerPostes(TStringList *ListeDesPostes);
  bool __fastcall GetValeursPoste(unsigned short NumeroPoste,PosteCriteres &Criteres);
  bool __fastcall SetValeursPoste(unsigned short NumeroPoste,const PosteCriteres &Criteres);
};




#endif
 
